package com.zq.solution;

/**
 * @ClassName SortArrayByParityII
 * @Description
 * 922. 按奇偶排序数组 II
 *   给定一个非负整数数组A， A 中一半整数是奇数，一半整数是偶数。
 *   对数组进行排序，以便当A[i] 为奇数时，i也是奇数；当A[i]为偶数时， i 也是偶数。
 *   你可以返回任何满足上述条件的数组作为答案。
 * 示例：
 *   输入：[4,2,5,7]
 *   输出：[4,5,2,7]
 *   解释：[4,7,2,5]，[2,5,4,7]，[2,7,4,5] 也会被接受。
 * 提示：
 *   2 <= A.length <= 20000
 *   A.length % 2 == 0
 *   0 <= A[i] <= 1000
 * @Author ZQ
 * @Date 2020/11/12 14:15
 * @Version 1.0
 */
public class SortArrayByParityII {
    public static int[] sortArrayByParityII(int[] A) {//交换实现
        if (A ==null || A.length < 1) return A;
        for (int i = 0; i < A.length; i++){
            if (A[i] % 2 == i % 2) continue;
            for (int j = i + 1; j < A.length; j++){
                if (A[i] % 2 != A[j] % 2){
                    int tmp = A[i];
                    A[i] = A[j];
                    A[j] = tmp;
                    break;
                }
            }
        }
        return A;
    }
    public static int[] sortArrayByParityII1(int[] A) {//方法二：先方偶数，再放奇数
        int[] tmp = new int[A.length];
        int i = 0;
        for (int a : A){
           if (a % 2 == 0){
               tmp[i] = a;
               i += 2;
           }
        }
        i = 1;
        for (int a : A){
            if (a % 2 == 1){
                tmp[i] = a;
                i += 2;
            }
        }
        return tmp;
    }


    public static void main(String[] args) {
        for (Integer n : sortArrayByParityII(new int[]{4,2,5,7})){
            System.out.print(n + ",");
        }
    }
}
